package cn.edu.scau.service;

import java.io.IOException;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Service;

import cn.edu.scau.entity.Account;

/**
 * 账号服务的接口
 * @author Administrator
 *
 *
 */
public interface AccountService {
	
	/**
	 * 注册
	 * @param account 封装好的账号类，该类为待检验的账号
	 * @return 注册是否成功
	 */
	public boolean registerTheAccount(Account account);
		
	/**
	 * 更新账号信息
	 * @param newAccount 该账号类为更改后信息的账号类
	 * @param id 需要修改账号信息的账号的id
	 */
	public boolean updateTheAccount(Account newAccount,Integer id);
	
	/**
	 * 删除账号
	 * @param id 需要删除账号的id
	 */
	public boolean deleteTheAccount(Integer id);
	
	/**
	 * 对密码进行MD5加密
	 * @param password 密码
	 * @return 加密后的密码
	 */
	public String MD5(String password);
	
	/**
	 * 登录
	 * @param loginName 账号
	 * @param loginPassword 密码
	 * @param picCode 正确的验证码,controller通过session获得
	 * @param checkCode 用户输入的验证码  
	 * @return 不同的登录检验状态
	 */
	public String loginTheAccount(String loginName,String loginPassword,String picCode,String checkCode);
	
	/**
	 * 展示所有的用户
	 */
	public List<Account> showAllAccount();
	
	/**
	 * 生成验证码
	 * @param httpServletRequest
	 * @param httpServletResponse
	 */
	public void picCode(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse)throws IOException;
	
	/**
	 * 检验验证码是否输入正确
	 * @param picCode 正确的验证码
	 * @param checkCode 用户输入的验证码
	 * @return 是否正确
	 */
	public boolean checkPicCode(String picCode,String checkCode);
	
	/**
	 * 展示个人账户的信息
	 * @param id 账户的id
	 * @return
	 */
	public Account showTheAccountById(Integer id);
	
}
